﻿/*
 * record required init 修饰符
 */



var user = new User_1("123");

// init 关键字
User_2 user2 = new User_2() { UserName = "admin", Password = "1234" };

// required 关键字 Id 必须填写
User_3 user3 = new()
{
    Id = 1,
};

// record
var user4 = new User_4("admin", "123456");
var user5 = user4 with { Password = "qwerty" }; // record 值怎么修改 原理是Copy一份新的


//传统方式
class User_1
{
    public User_1(string user)
    {
        this.UserName = user;
    }
    public string UserName { get; }
}

// init 属性必须在 new 的时候初始化
class User_2
{
    public string UserName { get; init; }

    public string Password { get; init; }
}


// required  属性必须在new时赋值
class User_3
{
    public required int Id { get; init; }
    public string UserName { get; init; }

    public string Password { get; set; }
}

// record 修饰不可变的对象
record User_4(string UserName, string Password);